package com.maxbill.singleton;


import lombok.extern.log4j.Log4j2;

/*
 * 单例模式-懒汉模式-线程不安全
 * 特点：线程不安全，调用效率高，能延时加载（类加载时没有生成单例，只有当第一次调用获取实例方法时才去创建这个单例）
 * 优点：获取实例时进行实例的初始化，节省系统资源
 * 缺点：1.如果获取实例时，初始化的工作量较多，加载速度会变慢，影响系统系能
 * 缺点：2.每次获取实例都要进行非空检查，系统开销大
 * 缺点：3.非线程安全，当多个线程同时获取实例时，可能实例化未完成，非空判断均为true，造成对象重复实例化
 *
 * 单例模式的懒汉式体现了缓存的思想，延时加载就是一开始不要加载资源或者数据，一直等到马上就要使用这个资源的或者数据了去加载
 * 懒汉式是典型的时间换空间，不加同步的懒汉式是线程不安全的
 */
@Log4j2
public class SingletonLazyRiskMode {

    private static SingletonLazyRiskMode instance = null;

    private SingletonLazyRiskMode() {
        try {
            Thread.sleep(2000);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public static SingletonLazyRiskMode getInstance() {
        if (instance == null) {
            instance = new SingletonLazyRiskMode();
        }
        return instance;
    }

}
